package com.yh.mapper;

import com.yh.model.Orders;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * ClassName:OrdersMapper
 * Package:com.yh.mapper
 * Time: 2024/6/21
 */
public interface OrdersMapper {
    /**
     * 查询所有订单
     *
     * @return
     */
    List<Orders> findAll();

    /**
     * 根据产品id 去订单表中查询 关联的订单数量
     *
     * @param productId 产品id
     * @return
     */
    Integer findOrderCountByProductId(Integer productId);

    /**
     * 根据订单id 查询 游客的数量
     *
     * @param orderId 订单id
     * @return
     */
    Integer findTravellerCountByOrderId(@Param("orderId") Integer orderId);

    /**
     * 根据订单号 查询订单详情( 商品 会员信息 游客信息)
     *
     * @param id
     * @return
     */
    Orders findById(Integer id);

    /**
     * 新增订单
     *
     * @param order
     */
    void insert(Orders order);

    /**
     * 新增订单和游客的关系
     *
     * @param orderId          订单的主键
     * @param travellerId 游客id
     */
    void saveOrderAndTravellerRelation(@Param("orderId") String orderId,
                                       @Param("travellerId") Integer travellerId);

    /**
     * 根据id删除订单
     * @param id 产品id
     */
    void deleteById(Integer id);


    /**
     * 修改订单
     * @param order 前端传递过来的订单对象
     */
    void edit(Orders order);
}
